背景與動機:
網絡應用程式變得越來越普及,隨著數據傳輸需求的增加,安全性成為一個重要的問題,市場需求表明用戶端和伺服器之間的數據交換變得更加頻繁和複雜,為了滿足這些需求安全且高效的身份驗證機制變得非常重要。JWT是一種用於網路應用程式的開放標準(RFC 7519),用於在資料間安全地傳遞聲明,它可以被用來進行身分驗證(authentication)和資料交換(data exchange),通過簽名機制可以確保資料的完整性,伺服器不需要保留任何資料來驗證使用者。JWT常見的應用是在網路應用程式中進行身分驗證,當用戶端發送請求時,通常會使用帳號和密碼向伺服器進行身分驗證,一旦驗證成功,伺服器會生成一個JSON Web Token(JWT),並將其發送到用戶的應用程式中。
技術介紹:
利用JWT來對使用者進行驗證,使用者會先請求伺服器給予該JWT,只要使用者帶著這個JWT向伺服器請求資源,如果這個JWT是有效的,就能獲取資源。JWT可以視為用戶端的「入場憑證」,代表了用戶的身分和權限,在之後的每個HTTP請求中,用戶端都會將這個JWT放在Authorization標頭(header)中,以便伺服器驗證用戶的身分。
JWT由三個部分組成:標頭(header)、有效負載(payload)、以及簽名(signature)。標頭通常包含了類型(typ)和使用的加密算法(alg)等資訊。有效負載是有關使用者和其他資訊的一些聲明。簽名則是用來確保資料的完整性和驗證其來源。
1.標頭(header):
JWT的技術優點:
1.輕量和簡單:JWT使用JSON格式,簡潔且易於理解,大部分的程式語言皆支援。
2.無需存儲狀態:無需在伺服器端存儲會話信息,減輕了伺服器的負擔,提高了系統的效率。
3.跨域使用:JWT可以輕鬆地在不同的域之間傳遞,方便實現跨域身份驗證。
4.安全性:通過簽名機制確保資料的完整性,並且可以使用加密算法保護敏感資訊。
5.便利性:對於現在手機上的APP的應用非常好,使用者不用每次打開APP都要重新輸入帳號與密碼。
流程如下:
[用戶認證] --> [JWT 生成] --> [用戶請求攜帶 JWT] --> [伺服器驗證 JWT]